Abstract
Based on survey responses from mothers who gave birth in the state of
California in 2016, we analyzed the use of synthetic oxytocin (Pitocin)
during birth and the ways in which Pitocin usage might change with
differences in mothers’ income, education, choice of care provider, and
feelings on care providers after birth.
Hypothesis: Among those who had a midwife or would
have preferred to have a midwife the drug Pitocin is administered
less.
Results: We did not find a significant relationship
between the birth providers, the preference of birth providers, and the
use of Pitocin. The analysis does indicate a statistically significant
relationship between education level and Pitocin use as well as
education level and midwife preference.
Introduction
The Childbirth Connection Programs at the National Partnership for
Women & Families developed the Listening to Mothers 2016 survey and
collected responses used in this project, (available here https://www.chcf.org/collection/listening-to-mothers-in-california/).
This sample was collected because of 1 out of every 8 infants born in
America is born in the state of California (Survey Factsheet 2018). The
data set thus enables researchers to draw larger conclusions about
pregnancy, maternal care, and birth interventions in other areas across
the country. The dependent variable Pitocin was selected to represent
modern birth, the drug is present in birth settings which normally
involve hospitals because it is delivered intravenously. This modern
touch stone is compared to the role of other “nontraditional” birth
choices and preferences within California– the independent variable.
Additional independent variables included are type of care provider,
birth interventions, income, and education. Mothers who responded gave
birth in 2016, lived in California, and spoke either English or Spanish.
The role of certain demographic data on birth choices is analyzed to
acknowledge the choices of a mother in any birth setting being affected
by socioeconomic and cultural factors.
We hypothesize that mothers with midwives or who wished they had a
midwife as a provider had less medicalized intervention, specifically
Pitocin, during their birth. # History The difference in child delivery
practices between obstetrics practitioners and midwives varies greatly.
“Whilst it is difficult to categorise maternity models of care
exclusively due to the influence of generic policies and guidelines, it
is assumed that the underpinning philosophy of a midwife‐led model of
care is normality and the natural ability of women to experience birth
without routine intervention,” (Sandall 2016). The interventions
assessed here are modern birth interventions. As such, we focus on a
highly medicalized practice: the use of Pitocin as a method of birth
augmentation. Pitocin is an intravenously administered synthetic
oxytocin which is meant to mimic the natural oxytocin produced by
mothers during labor (Mansy 2017). This type of intervention impacts the
experience of mothers in a well-documented manner thanks largely to
surveys like Listening to Mothers 2016.
To illustrate, first we have Caroline, a mother whose anecdote was
chosen for this paper due to their similar shared experience with many
other mothers. Caroline felt pressured into induction on her due date,
and was told she would be fine. Caroline said in an interview:
“So she decided to induce me on my due date, and I really was
opposed to that, just because like I told you I didn’t want any
medications and she insisted that it would be fine, no problem, this
happens all the time, it’s no big deal, and I just felt like from a
health standpoint, once you have one intervention, it kind of snowballs
into needing a bunch of other interventions and I didn’t want that. And
I really didn’t want a C-section and then I didn’t want an epidural,
that kind of thing. And then from an honesty standpoint, I was worried
about what she was telling my insurance company.” (Freund 2008)
Comparatively, first time mother Jessica felt more comfortable with
her doula who made sure to inform her about each step in the process
being presented to her. She said in an interview:
“My doctor really didn’t go into it so much with me about the
lack of pain blocking hormones [when labor is induced], but my doula;
she explained to me that it would be very difficult.” (Freund
2008).
Research shows the “use of oxytocin in labor augmentation increases
the volume of blood loss,” (Mansy 2017). Use of synthetic oxytocin as a
labor intervention practice was present in 27% of responses in our
sample. These responses represent a key comparison point between our
variables—still, experts insist “in low risk women, induction of labor,
regardless of the method used, is associated with a higher risk of PPH
[postpartum hemorrhage] than spontaneous labor” (Mansy 2017).
Why may providers use Pitocin in the first place? Pitocin is
developed perfectly mimic the naturally occurring oxytocin that is
produced by activating the parasympathetic nervous system. Both the
natural oxytocin and the synthetic Pitocin induce contractions necessary
for labor. The parasympathetic system response is also responsible for
the hormonal and chemical balance of the person giving birth. This is
the fundamental difference: while the naturally occurring oxytocin comes
from the pituitary gland it reduces anxiety, stress, and pain, the
synthetic version of oxytocin does not cross the blood brain barrier and
does not release the same stress and pain relieving hormones as
naturally-occurring oxytocin. (Dekker 2020). Pitocin, therefore, serves
a highly physiological function in its ability to instigate uterine
contractions but provides none of the psychological benefits.
Administration of Pitocin can also be used to control a number of
postpartum issues including inducing the delivery of the placenta and
hemorrhaging.
Data
The key variables selected and analyzed from the survey data are
shown here:
| Variable | Explanation |
| Q805 | Which type of maternity care provider most often provided your care during pregnancy? [Answer: 4 - A midwife (could be called CNM)] |
| Q815 | Which type of provider do you wish you had? [Answer: 3 - (Midwife (CNM))] |
| Q1111c | How did your maternity care provider try to start your labor? Please select all that apply. [Answer: 3 - Gave the medicine Pitocin (“pit” or oxytocin) through an IV drip before the start of labor contractions) |
| Q1830b | Thinking of your recent pregnancy and birth, what are the total costs you have been asked to pay yourself for any of your maternity care providers and hospital bills for you and your baby? Please include bills already paid and bills owed. Please do not include the cost of buying your health insurance. If you are not sure, give your best guess. |
| Q1860 | What is the highest level of education you have completed or the highest degree you have received? |
| Q1865 | Which of the following income categories best describes your total 2016 household income before taxes? If you do not know, please give your best guess. |
| had_mid | Had a midwife during childbirth |
| wish_mid | Wanted a midwife during childbirth |
| pre_pit | Administered Pitocin before childbirth |
| mid_pit | Administered Pitocin during childbirth |
Results
Descriptive Statistics
Figure 2
slices <- c(92, 27, 142, 8, 2, 30)
lbls <- c("OB-GYN", "Family Doctor","Midwife", "Nurse Practicioner", "Physicians Assistant", "Other")
pct <- round(slices/sum(slices)*100)
lbls <- paste(lbls, pct)
lbls <- paste(lbls, "%", sep="")
pie(slices, init.angle = 25,labels = lbls, main = "Q815: Which type of provider do you wish you had?", sub= "Respondents answered 1 (Yes) to Q811, Did you wish you had a different provider?")
### Figure 3 Overall, 12% of survey respondents wished they had a
different type of maternity care provider than the one they had. From
Figure 2, it is shown that almost half of respondents who did want a
different care provider wished they had a midwife. A followup question
was asked (Q816) to evaluate possible reasons why mothers did not have a
midwife if they preferred one. Figure 3 suggests that the most popular
reason was that respondents did not think that their health insurance
plan would cover the services of a midwife. Other highly cited reasons
included: “Another type of maternity care provider was assigned to me”
and “I needed a doctor because of my health problems”. ### Figure 3
H <- c(77, 20, 15, 21, 39, 29, 30, 33)
N <- c("a", "b", "c", "d", "e", "f", "g", "h")
lbls816 <-
barplot(H,names.arg=N,xlab="Response", ylab="Number of respondents", col="grey", main="Q816: Why didn't you have a midwife as your maternity care provider?", sub= "Respondents that answered 3 (Midwife) for Q815, Which type of provider did you wish you had?", border="black")

Key
a- I didn’t think my health insurance plan paid for services of a
midwife
b- I didn’t think that a midwife could practice in a hospital
c- I didn’t think that I could have an epidural with a midwife
d- I didn’t know what would happen if I needed a doctor (for example,
for a c-section)
e- Another type of maternity care provider was assigned to me
f- A midwife was not available
g- I needed a doctor because of my health problems
h- Other reason
Regression Analysis
Relationship(s) were calculated over the most important variables
including income, Pitocin usage, wanting a midwife, having a midwife,
and education levels. These were analyzed and regressed in order to
determine any sort of models and statistically significant factors.
model1 <- lm(mid_pit ~ had_mid + wish_mid + Q1860 + Q1865, data = listening_data)
huxreg(model1, statistics = c(N = "nobs", R2 = "r.squared"))
| (1) |
| (Intercept) | 0.207 * |
| (0.093) |
| had_mid | 0.052 |
| (0.124) |
| wish_mid | -0.120 |
| (0.074) |
| Q1860 | 0.080 ** |
| (0.026) |
| Q1865 | -0.005 |
| (0.008) |
| N | 213 |
| R2 | 0.066 |
| *** p < 0.001; ** p < 0.01; * p < 0.05. |
Limitations and Other Factors
There remains the aspect of experimental externalities; some
variables and their resulting effects are not completely accounted for
within the experiment. Just from the data collection method alone, noted
limitations were observed. The data was only collected in the state of
California, only by those that could speak Spanish and/or English, had a
child during 2016, had a way of responding to a survey over phone call,
and responded back to the Listening To Mothers Survey. All of which more
narrowly refining the scope instead of providing overall models and data
applicable to all mothers. Though it can be initially deemed that
California is a good state to run an experiment of this type on due to
factors such as race, income, education, sheer population, and other
measures, it still does not encompass every type of mother or
birth-practice. Furthermore, all participants had to be over the age of
18, and because mothers can have children below that age, that also
omits a group of individuals that can influence our final data. In fact,
nearly 13% of all mothers in America are below the age of 18 (Pew
Research Center 2018).
The age gap omission and the barriers to providing survey data such
as the ability and time to give a phone call can drastically alter the
income variables ran in our analyses as well. As both people who are
under the age of 18 or those who do not possess the ability or money to
have a cell phone could reasonably be assumed to have lower income than
those who are above 18 and have capabilities of giving survey data via
phone call. The Spanish/English barrier eliminates mothers who don’t
belong to such a category from giving their data at all, influencing our
estimations in multiple regards; as non Spanish/English speaking people
have wide varied incomes and educational levels. Lastly, as seen in the
Listening To Mothers Survey Data itself, for many of the administration
or birth-practice questions, the answer of “I don’t know” was a choice.
Though not necessarily medical malpractice, we do know that consent
during birth is often forgotten or disregarded, especially when
performed outside the midwife model of care.
From either language barriers, mental awareness of the mother, or
other conditions we can conclude that mothers might not be able to
remember choices or were not adequately informed about the actions of
their provider. Because of this, the magnitude of any effect analyzed in
birth is difficult to determine.
Conclusion
The initial hypothesis was incorrect but this experiment resulted in
limited statistically significant relationships between the educational
level of the mother and Pitocin usage, as well as either midwifery
presence or the desire for midwifery care. Though the styles and
practices involved in childbirth may have changed over time, there is
still a deep connection to be explored between the mother, their
background, and the models of care which bring children into the
world.
References
Evidence on: Pitocin® During the Third Stage of Labor. (2020, June
23). Evidence Based Birth®. https://evidencebasedbirth.com/evidence-on-pitocin-during-the-third-stage-of-labor/
Hermann, A. (n.d.). Managing Labor with Pitocin: Medical Discourse
and Decision-Making in Contemporary Clinical Settings. 99.
In Defense of Normal Birth. (2019, September 26). The Midwives Of New
Jersey. https://midwivesofnj.com/in-defense-of-normal-birth/
Mansy, A. (2017). Does Labor Augmentation with Oxytocin Increase the
Risk of Postpartum Hemorrhage? A Randomized Controlled Trial. Clinics in
Mother and Child Health, 14(3). https://doi.org/10.4172/2090-7214.1000268
Pew Research Center. (2018, January 10). Women are delaying
motherhood through their 20s. Pew Research Center’s Social &
Demographic Trends Project. Retrieved November 30, 2021, from https://www.pewresearch.org/social-trends/2018/01/18/theyre-waiting-longer-but-u-s-women-today-more-likely-to-have-children-than-a-decade-ago/pstl_1-18-18-motherhood-01/
Thesis Expectations and Experiences of First-Time Mothers, Andrea
Freund.pdf. (n.d.). Retrieved November 30, 2021, from https://scholarworks.iupui.edu/bitstream/handle/1805/1669/Thesis%20Expectations%20and%20Experiences%20of%20First-Time%20Mothers,%20Andrea%20Freund.pdf?sequence=2
LS0tCnRpdGxlOiAiTW90aGVy4oCZcyBDaG9pY2U6IFByZXNlbmNlIG9mIE1pZHdpZmUgQ2FyZSBhbmQgVXNlIG9mIHRoZSBCaXJ0aCBJbnRlcnZlbnRpb24gRHJ1ZyBQaXRvY2luIgphdXRob3I6ICJDZWxlc3RlIENvdWdobGluIgpkYXRlOiAiMzAvMTEvMjAyMSIKb3V0cHV0OiAKICBodG1sX2RvY3VtZW50OgogICAgaGlnaGxpZ2h0OiBweWdtZW50cwogICAgdGhlbWU6IHNwYWNlbGFiCiAgICB0b2M6IFRSVUUKICAgIHRvY19mbG9hdDogVFJVRQogICAgY29kZV9kb3dubG9hZDogVFJVRQogICAgY29kZV9mb2xkaW5nOiBzaG93Ci0tLQoKYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkKbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkob3BlbmludHJvKQpsaWJyYXJ5KGRhdGEudGFibGUpCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkoaHV4dGFibGUpCmxpYnJhcnkobW9kZWxzdW1tYXJ5KQpgYGAKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIyBBYnN0cmFjdAoKQmFzZWQgb24gc3VydmV5IHJlc3BvbnNlcyBmcm9tIG1vdGhlcnMgd2hvIGdhdmUgYmlydGggaW4gdGhlIHN0YXRlIG9mIENhbGlmb3JuaWEgaW4gMjAxNiwgd2UgYW5hbHl6ZWQgdGhlIHVzZSBvZiBzeW50aGV0aWMgb3h5dG9jaW4gKFBpdG9jaW4pIGR1cmluZyBiaXJ0aCBhbmQgdGhlIHdheXMgaW4gd2hpY2ggUGl0b2NpbiB1c2FnZSBtaWdodCBjaGFuZ2Ugd2l0aCBkaWZmZXJlbmNlcyBpbiBtb3RoZXJzJyBpbmNvbWUsIGVkdWNhdGlvbiwgY2hvaWNlIG9mIGNhcmUgcHJvdmlkZXIsIGFuZCBmZWVsaW5ncyBvbiBjYXJlIHByb3ZpZGVycyBhZnRlciBiaXJ0aC4KCioqSHlwb3RoZXNpczoqKiBBbW9uZyB0aG9zZSB3aG8gaGFkIGEgbWlkd2lmZSBvciB3b3VsZCBoYXZlIHByZWZlcnJlZCB0byBoYXZlIGEgbWlkd2lmZSB0aGUgZHJ1ZyBQaXRvY2luIGlzIGFkbWluaXN0ZXJlZCBsZXNzLgoKKipSZXN1bHRzOioqIFdlIGRpZCBub3QgZmluZCBhIHNpZ25pZmljYW50IHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBiaXJ0aCBwcm92aWRlcnMsIHRoZSBwcmVmZXJlbmNlIG9mIGJpcnRoIHByb3ZpZGVycywgYW5kIHRoZSB1c2Ugb2YgUGl0b2Npbi4gVGhlIGFuYWx5c2lzIGRvZXMgaW5kaWNhdGUgYSBzdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50IHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGVkdWNhdGlvbiBsZXZlbCBhbmQgUGl0b2NpbiB1c2UgYXMgd2VsbCBhcyBlZHVjYXRpb24gbGV2ZWwgYW5kIG1pZHdpZmUgcHJlZmVyZW5jZS4gCgojIEludHJvZHVjdGlvbiAKVGhlIENoaWxkYmlydGggQ29ubmVjdGlvbiBQcm9ncmFtcyBhdCB0aGUgTmF0aW9uYWwgUGFydG5lcnNoaXAgZm9yIFdvbWVuICYgRmFtaWxpZXMgZGV2ZWxvcGVkIHRoZSBMaXN0ZW5pbmcgdG8gTW90aGVycyAyMDE2IHN1cnZleSBhbmQgY29sbGVjdGVkIHJlc3BvbnNlcyB1c2VkIGluIHRoaXMgcHJvamVjdCwgKGF2YWlsYWJsZSBoZXJlIGh0dHBzOi8vd3d3LmNoY2Yub3JnL2NvbGxlY3Rpb24vbGlzdGVuaW5nLXRvLW1vdGhlcnMtaW4tY2FsaWZvcm5pYS8pLiBUaGlzIHNhbXBsZSB3YXMgY29sbGVjdGVkIGJlY2F1c2Ugb2YgMSBvdXQgb2YgZXZlcnkgOCBpbmZhbnRzIGJvcm4gaW4gQW1lcmljYSBpcyBib3JuIGluIHRoZSBzdGF0ZSBvZiBDYWxpZm9ybmlhIChTdXJ2ZXkgRmFjdHNoZWV0IDIwMTgpLiBUaGUgZGF0YSBzZXQgdGh1cyBlbmFibGVzIHJlc2VhcmNoZXJzIHRvIGRyYXcgbGFyZ2VyIGNvbmNsdXNpb25zIGFib3V0IHByZWduYW5jeSwgbWF0ZXJuYWwgY2FyZSwgYW5kICBiaXJ0aCBpbnRlcnZlbnRpb25zIGluIG90aGVyIGFyZWFzIGFjcm9zcyB0aGUgY291bnRyeS4gClRoZSAgZGVwZW5kZW50IHZhcmlhYmxlIFBpdG9jaW4gd2FzIHNlbGVjdGVkIHRvIHJlcHJlc2VudCBtb2Rlcm4gYmlydGgsIHRoZSBkcnVnIGlzIHByZXNlbnQgaW4gYmlydGggc2V0dGluZ3Mgd2hpY2ggbm9ybWFsbHkgaW52b2x2ZSBob3NwaXRhbHMgYmVjYXVzZSBpdCBpcyBkZWxpdmVyZWQgaW50cmF2ZW5vdXNseS4gVGhpcyBtb2Rlcm4gdG91Y2ggc3RvbmUgaXMgY29tcGFyZWQgdG8gdGhlIHJvbGUgb2Ygb3RoZXIgIm5vbnRyYWRpdGlvbmFsIiBiaXJ0aCBjaG9pY2VzIGFuZCBwcmVmZXJlbmNlcyB3aXRoaW4gQ2FsaWZvcm5pYS0tIHRoZSBpbmRlcGVuZGVudCB2YXJpYWJsZS4gQWRkaXRpb25hbCBpbmRlcGVuZGVudCB2YXJpYWJsZXMgaW5jbHVkZWQgYXJlIHR5cGUgb2YgY2FyZSBwcm92aWRlciwgIGJpcnRoIGludGVydmVudGlvbnMsIGluY29tZSwgYW5kIGVkdWNhdGlvbi4gTW90aGVycyB3aG8gcmVzcG9uZGVkIGdhdmUgYmlydGggaW4gMjAxNiwgbGl2ZWQgaW4gQ2FsaWZvcm5pYSwgYW5kIHNwb2tlIGVpdGhlciBFbmdsaXNoIG9yIFNwYW5pc2guIFRoZSByb2xlIG9mIGNlcnRhaW4gZGVtb2dyYXBoaWMgZGF0YSBvbiBiaXJ0aCBjaG9pY2VzIGlzIGFuYWx5emVkIHRvIGFja25vd2xlZGdlIHRoZSBjaG9pY2VzIG9mIGEgbW90aGVyIGluIGFueSBiaXJ0aCBzZXR0aW5nIGJlaW5nIGFmZmVjdGVkIGJ5IHNvY2lvZWNvbm9taWMgYW5kIGN1bHR1cmFsIGZhY3RvcnMuIAoKV2UgaHlwb3RoZXNpemUgdGhhdCBtb3RoZXJzIHdpdGggbWlkd2l2ZXMgb3Igd2hvIHdpc2hlZCB0aGV5IGhhZCBhIG1pZHdpZmUgYXMgYSBwcm92aWRlciBoYWQgbGVzcyBtZWRpY2FsaXplZCBpbnRlcnZlbnRpb24sIHNwZWNpZmljYWxseSBQaXRvY2luLCBkdXJpbmcgdGhlaXIgYmlydGguIAojIEhpc3RvcnkKVGhlIGRpZmZlcmVuY2UgaW4gY2hpbGQgZGVsaXZlcnkgcHJhY3RpY2VzIGJldHdlZW4gb2JzdGV0cmljcyBwcmFjdGl0aW9uZXJzIGFuZCBtaWR3aXZlcyB2YXJpZXMgZ3JlYXRseS4gIldoaWxzdCBpdCBpcyBkaWZmaWN1bHQgdG8gY2F0ZWdvcmlzZSBtYXRlcm5pdHkgbW9kZWxzIG9mIGNhcmUgZXhjbHVzaXZlbHkgZHVlIHRvIHRoZSBpbmZsdWVuY2Ugb2YgZ2VuZXJpYyBwb2xpY2llcyBhbmQgZ3VpZGVsaW5lcywgaXQgaXMgYXNzdW1lZCB0aGF0IHRoZSB1bmRlcnBpbm5pbmcgcGhpbG9zb3BoeSBvZiBhIG1pZHdpZmXigJBsZWQgbW9kZWwgb2YgY2FyZSBpcyBub3JtYWxpdHkgYW5kIHRoZSBuYXR1cmFsIGFiaWxpdHkgb2Ygd29tZW4gdG8gZXhwZXJpZW5jZSBiaXJ0aCB3aXRob3V0IHJvdXRpbmUgaW50ZXJ2ZW50aW9uLCIgKFNhbmRhbGwgMjAxNikuIFRoZSBpbnRlcnZlbnRpb25zIGFzc2Vzc2VkIGhlcmUgYXJlIG1vZGVybiBiaXJ0aCBpbnRlcnZlbnRpb25zLiBBcyBzdWNoLCB3ZSBmb2N1cyBvbiBhIGhpZ2hseSBtZWRpY2FsaXplZCBwcmFjdGljZTogdGhlIHVzZSBvZiBQaXRvY2luIGFzIGEgbWV0aG9kIG9mIGJpcnRoIGF1Z21lbnRhdGlvbi4gUGl0b2NpbiBpcyBhbiBpbnRyYXZlbm91c2x5IGFkbWluaXN0ZXJlZCBzeW50aGV0aWMgb3h5dG9jaW4gd2hpY2ggaXMgbWVhbnQgdG8gbWltaWMgdGhlIG5hdHVyYWwgb3h5dG9jaW4gcHJvZHVjZWQgYnkgbW90aGVycyBkdXJpbmcgbGFib3IgKE1hbnN5IDIwMTcpLiBUaGlzIHR5cGUgb2YgaW50ZXJ2ZW50aW9uIGltcGFjdHMgdGhlIGV4cGVyaWVuY2Ugb2YgbW90aGVycyBpbiBhIHdlbGwtZG9jdW1lbnRlZCBtYW5uZXIgdGhhbmtzIGxhcmdlbHkgdG8gc3VydmV5cyBsaWtlIExpc3RlbmluZyB0byBNb3RoZXJzIDIwMTYuCgpUbyBpbGx1c3RyYXRlLCBmaXJzdCB3ZSBoYXZlIENhcm9saW5lLCBhIG1vdGhlciB3aG9zZSBhbmVjZG90ZSB3YXMgY2hvc2VuIGZvciB0aGlzIHBhcGVyIGR1ZSB0byB0aGVpciBzaW1pbGFyIHNoYXJlZCBleHBlcmllbmNlIHdpdGggbWFueSBvdGhlciBtb3RoZXJzLiBDYXJvbGluZSBmZWx0IHByZXNzdXJlZCBpbnRvIGluZHVjdGlvbiBvbiBoZXIgZHVlIGRhdGUsIGFuZCB3YXMgdG9sZCBzaGUgd291bGQgYmUgZmluZS4gQ2Fyb2xpbmUgc2FpZCBpbiBhbiBpbnRlcnZpZXc6CgoqIlNvIHNoZSBkZWNpZGVkIHRvIGluZHVjZSBtZSBvbiBteSBkdWUgZGF0ZSwgYW5kIEkgcmVhbGx5IHdhcyBvcHBvc2VkIHRvIHRoYXQsIGp1c3QgYmVjYXVzZSBsaWtlIEkgdG9sZCB5b3UgSSBkaWRuJ3Qgd2FudCBhbnkgbWVkaWNhdGlvbnMgYW5kIHNoZSBpbnNpc3RlZCB0aGF0IGl0IHdvdWxkIGJlIGZpbmUsIG5vIHByb2JsZW0sIHRoaXMgaGFwcGVucyBhbGwgdGhlIHRpbWUsIGl0J3Mgbm8gYmlnIGRlYWwsIGFuZCBJIGp1c3QgZmVsdCBsaWtlIGZyb20gYSBoZWFsdGggc3RhbmRwb2ludCwgb25jZSB5b3UgaGF2ZSBvbmUgaW50ZXJ2ZW50aW9uLCBpdCBraW5kIG9mIHNub3diYWxscyBpbnRvIG5lZWRpbmcgYSBidW5jaCBvZiBvdGhlciBpbnRlcnZlbnRpb25zIGFuZCBJIGRpZG4ndCB3YW50IHRoYXQuIEFuZCBJIHJlYWxseSBkaWRuJ3Qgd2FudCBhIEMtc2VjdGlvbiBhbmQgdGhlbiBJIGRpZG4ndCB3YW50IGFuIGVwaWR1cmFsLCB0aGF0IGtpbmQgb2YgdGhpbmcuIEFuZCB0aGVuIGZyb20gYW4gaG9uZXN0eSBzdGFuZHBvaW50LCBJIHdhcyB3b3JyaWVkIGFib3V0IHdoYXQgc2hlIHdhcyB0ZWxsaW5nIG15IGluc3VyYW5jZSBjb21wYW55LiIqIChGcmV1bmQgMjAwOCkKCkNvbXBhcmF0aXZlbHksIGZpcnN0IHRpbWUgbW90aGVyIEplc3NpY2EgZmVsdCBtb3JlIGNvbWZvcnRhYmxlIHdpdGggaGVyIGRvdWxhIHdobyBtYWRlIHN1cmUgdG8gaW5mb3JtIGhlciBhYm91dCBlYWNoIHN0ZXAgaW4gdGhlIHByb2Nlc3MgYmVpbmcgcHJlc2VudGVkIHRvIGhlci4gU2hlIHNhaWQgaW4gYW4gaW50ZXJ2aWV3OgoKKiJNeSBkb2N0b3IgcmVhbGx5IGRpZG4ndCBnbyBpbnRvIGl0IHNvIG11Y2ggd2l0aCBtZSBhYm91dCB0aGUgbGFjayBvZiBwYWluIGJsb2NraW5nIGhvcm1vbmVzIFt3aGVuIGxhYm9yIGlzIGluZHVjZWRdLCBidXQgbXkgZG91bGE7IHNoZSBleHBsYWluZWQgdG8gbWUgdGhhdCBpdCB3b3VsZCBiZSB2ZXJ5IGRpZmZpY3VsdC4iKiAoRnJldW5kIDIwMDgpLgoKUmVzZWFyY2ggc2hvd3MgdGhlICJ1c2Ugb2Ygb3h5dG9jaW4gaW4gbGFib3IgYXVnbWVudGF0aW9uIGluY3JlYXNlcyB0aGUgdm9sdW1lIG9mIGJsb29kIGxvc3MsIiAoTWFuc3kgMjAxNykuIFVzZSBvZiBzeW50aGV0aWMgb3h5dG9jaW4gYXMgYSBsYWJvciBpbnRlcnZlbnRpb24gcHJhY3RpY2Ugd2FzIHByZXNlbnQgaW4gMjclIG9mIHJlc3BvbnNlcyBpbiBvdXIgc2FtcGxlLiBUaGVzZSByZXNwb25zZXMgcmVwcmVzZW50IGEga2V5IGNvbXBhcmlzb24gcG9pbnQgYmV0d2VlbiBvdXIgdmFyaWFibGVzLS0tc3RpbGwsIGV4cGVydHMgaW5zaXN0ICJpbiBsb3cgcmlzayB3b21lbiwgaW5kdWN0aW9uIG9mIGxhYm9yLCByZWdhcmRsZXNzIG9mIHRoZSBtZXRob2QgdXNlZCwgaXMgYXNzb2NpYXRlZCB3aXRoIGEgaGlnaGVyIHJpc2sgb2YgUFBIIFtwb3N0cGFydHVtIGhlbW9ycmhhZ2VdIHRoYW4gc3BvbnRhbmVvdXMgbGFib3IiIChNYW5zeSAyMDE3KS4KCldoeSBtYXkgcHJvdmlkZXJzIHVzZSBQaXRvY2luIGluIHRoZSBmaXJzdCBwbGFjZT8gUGl0b2NpbiBpcyBkZXZlbG9wZWQgcGVyZmVjdGx5IG1pbWljIHRoZSBuYXR1cmFsbHkgb2NjdXJyaW5nIG94eXRvY2luIHRoYXQgaXMgcHJvZHVjZWQgYnkgYWN0aXZhdGluZyB0aGUgcGFyYXN5bXBhdGhldGljIG5lcnZvdXMgc3lzdGVtLiBCb3RoIHRoZSBuYXR1cmFsIG94eXRvY2luIGFuZCB0aGUgc3ludGhldGljIFBpdG9jaW4gaW5kdWNlIGNvbnRyYWN0aW9ucyBuZWNlc3NhcnkgZm9yIGxhYm9yLiBUaGUgcGFyYXN5bXBhdGhldGljIHN5c3RlbSByZXNwb25zZSBpcyBhbHNvIHJlc3BvbnNpYmxlIGZvciB0aGUgaG9ybW9uYWwgYW5kIGNoZW1pY2FsIGJhbGFuY2Ugb2YgdGhlIHBlcnNvbiBnaXZpbmcgYmlydGguIFRoaXMgaXMgdGhlIGZ1bmRhbWVudGFsIGRpZmZlcmVuY2U6IHdoaWxlIHRoZSBuYXR1cmFsbHkgb2NjdXJyaW5nIG94eXRvY2luIGNvbWVzIGZyb20gdGhlIHBpdHVpdGFyeSBnbGFuZCBpdCByZWR1Y2VzIGFueGlldHksIHN0cmVzcywgYW5kIHBhaW4sIHRoZSBzeW50aGV0aWMgdmVyc2lvbiBvZiBveHl0b2NpbiBkb2VzIG5vdCBjcm9zcyB0aGUgYmxvb2QgYnJhaW4gYmFycmllciBhbmQgZG9lcyBub3QgcmVsZWFzZSB0aGUgc2FtZSBzdHJlc3MgYW5kIHBhaW4gcmVsaWV2aW5nIGhvcm1vbmVzIGFzIG5hdHVyYWxseS1vY2N1cnJpbmcgb3h5dG9jaW4uIChEZWtrZXIgMjAyMCkuICBQaXRvY2luLCB0aGVyZWZvcmUsIHNlcnZlcyBhIGhpZ2hseSBwaHlzaW9sb2dpY2FsIGZ1bmN0aW9uIGluIGl0cyBhYmlsaXR5IHRvIGluc3RpZ2F0ZSB1dGVyaW5lIGNvbnRyYWN0aW9ucyBidXQgcHJvdmlkZXMgbm9uZSBvZiB0aGUgcHN5Y2hvbG9naWNhbCBiZW5lZml0cy4gQWRtaW5pc3RyYXRpb24gb2YgUGl0b2NpbiBjYW4gYWxzbyBiZSB1c2VkIHRvIGNvbnRyb2wgYSBudW1iZXIgb2YgcG9zdHBhcnR1bSBpc3N1ZXMgaW5jbHVkaW5nIGluZHVjaW5nIHRoZSBkZWxpdmVyeSBvZiB0aGUgcGxhY2VudGEgYW5kIGhlbW9ycmhhZ2luZy4KCiMjIyBEYXRhCgpUaGUga2V5IHZhcmlhYmxlcyBzZWxlY3RlZCBhbmQgYW5hbHl6ZWQgZnJvbSB0aGUgc3VydmV5IGRhdGEgYXJlIHNob3duIGhlcmU6CgpgYGB7ciwgaW5jbHVkZSA9IEZBTFNFfQpWYXJpYWJsZSA8LSBjKCJRODA1IiwgIlE4MTUiLCAiUTExMTFjIiwgIlExODMwYiIsICJRMTg2MCIsICJRMTg2NSIsICJoYWRfbWlkIiwgIndpc2hfbWlkIiwgInByZV9waXQiLCAibWlkX3BpdCIpCkV4cGxhbmF0aW9uIDwtIGMoIldoaWNoIHR5cGUgb2YgbWF0ZXJuaXR5IGNhcmUgcHJvdmlkZXIgbW9zdCBvZnRlbiBwcm92aWRlZCB5b3VyIGNhcmUgZHVyaW5nIHByZWduYW5jeT8gW0Fuc3dlcjogNCAtIEEgbWlkd2lmZSAoY291bGQgYmUgY2FsbGVkIENOTSldIiwgIldoaWNoIHR5cGUgb2YgcHJvdmlkZXIgZG8geW91IHdpc2ggeW91IGhhZD8gW0Fuc3dlcjogMyAtIChNaWR3aWZlIChDTk0pKV0iLCAiSG93IGRpZCB5b3VyIG1hdGVybml0eSBjYXJlIHByb3ZpZGVyIHRyeSB0byBzdGFydCB5b3VyIGxhYm9yPyBQbGVhc2Ugc2VsZWN0IGFsbCB0aGF0IGFwcGx5LiBbQW5zd2VyOiAzIC0gR2F2ZSB0aGUgbWVkaWNpbmUgUGl0b2NpbiAo4oCccGl04oCdIG9yIG94eXRvY2luKSB0aHJvdWdoIGFuIElWIGRyaXAgYmVmb3JlIHRoZSBzdGFydCBvZiBsYWJvciBjb250cmFjdGlvbnMpIiwgIlRoaW5raW5nIG9mIHlvdXIgcmVjZW50IHByZWduYW5jeSBhbmQgYmlydGgsIHdoYXQgYXJlIHRoZSB0b3RhbCBjb3N0cyB5b3UgaGF2ZSBiZWVuIGFza2VkIHRvIHBheSB5b3Vyc2VsZiBmb3IgYW55IG9mIHlvdXIgbWF0ZXJuaXR5IGNhcmUgcHJvdmlkZXJzIGFuZCBob3NwaXRhbCBiaWxscyBmb3IgeW91IGFuZCB5b3VyIGJhYnk/IFBsZWFzZSBpbmNsdWRlIGJpbGxzIGFscmVhZHkgcGFpZCBhbmQgYmlsbHMgb3dlZC4gUGxlYXNlIGRvIG5vdCBpbmNsdWRlIHRoZSBjb3N0IG9mIGJ1eWluZyB5b3VyIGhlYWx0aCBpbnN1cmFuY2UuIElmIHlvdSBhcmUgbm90IHN1cmUsIGdpdmUgeW91ciBiZXN0IGd1ZXNzLiIsICJXaGF0IGlzIHRoZSBoaWdoZXN0IGxldmVsIG9mIGVkdWNhdGlvbiB5b3UgaGF2ZSBjb21wbGV0ZWQgb3IgdGhlIGhpZ2hlc3QgZGVncmVlIHlvdSBoYXZlIHJlY2VpdmVkPyIsICJXaGljaCBvZiB0aGUgZm9sbG93aW5nIGluY29tZSBjYXRlZ29yaWVzIGJlc3QgZGVzY3JpYmVzIHlvdXIgdG90YWwgMjAxNiBob3VzZWhvbGQgaW5jb21lIGJlZm9yZSB0YXhlcz8gSWYgeW91IGRvIG5vdCBrbm93LCBwbGVhc2UgZ2l2ZSB5b3VyIGJlc3QgZ3Vlc3MuIiwgIkhhZCBhIG1pZHdpZmUgZHVyaW5nIGNoaWxkYmlydGgiLCAiV2FudGVkIGEgbWlkd2lmZSBkdXJpbmcgY2hpbGRiaXJ0aCIsICJBZG1pbmlzdGVyZWQgUGl0b2NpbiBiZWZvcmUgY2hpbGRiaXJ0aCIsICJBZG1pbmlzdGVyZWQgUGl0b2NpbiBkdXJpbmcgY2hpbGRiaXJ0aCIpCgpkZiA8LSBkYXRhLmZyYW1lKFZhcmlhYmxlLCBFeHBsYW5hdGlvbikKYGBgCgpgYGB7cn0KZGYKYGBgCgojIFJlc3VsdHMKCiMjIERlc2NyaXB0aXZlIFN0YXRpc3RpY3MKCiMjIyBGaWd1cmUgMQoKU3VydmV5IHJlc3BvbnNlcyB3ZXJlIGFuYWx5emVkIGRlc2NyaXB0aXZlbHksIGZvY3VzaW5nIG9uIHBlcmNlbnRhZ2VzIG9mIG1vdGhlcnMgd2hvIHJlc3BvbmRlZCB0byBxdWVzdGlvbnMgaW4gY2VydGFpbiB3YXlzLiBJbiByZXNwb25zZSB0byBRNzA1LCB3aGljaCBhc2tlZCByZXNwb25kZW50cyBpZiB0aGV5IGhhZCBhIGNob2ljZSBpbiB0aGVpciBtYXRlcm5pdHkgY2FyZSBwcm92aWRlciwgYWJvdXQgMjAlIG9mIG1vdGhlcnMgc3RhdGVkIHRoZXkgZGlkIG5vdCBoYXZlIGEgY2hvaWNlIGJlY2F1c2UgdGhlaXIgcHJvdmlkZXIgd2FzIGFzc2lnbmVkIHRvIHRoZW0uIEZpZ3VyZSAxIHNob3dzIHRoYXQgdGhlIG1ham9yaXR5IG9mIG1vdGhlcnMgd2hvIHRvb2sgdGhpcyBzdXJ2ZXkgbW9zdCBvZnRlbiByZWNlaXZlZCBjYXJlIGZyb20gYW4gT0ItR1lOLiBUaGlzIGlzIGNvbnNpc3RlbnQgd2l0aCBmaW5kaW5ncyBmcm9tIGV4aXN0aW5nIHJlc2VhcmNoLCB3aGljaCBwb2ludCB0byB0aGUgb3ZlcmFsbCB0cmVuZCBvZiBtZWRpY2FsaXplZCBiaXJ0aCBzZXR0aW5ncy4gSG93ZXZlciwgdGhlIHNlY29uZCBsYXJnZXN0IGNhdGVnb3J5IG9mIGNhcmUgcHJvdmlkZXJzIHJlcG9ydGVkIGluIHRoaXMgc3VydmV5IHdhcyBtaWR3aXZlcy4gVGhpcyBhbHNvIGZvbGxvd3MgZ3JlYXRlciBwb3B1bGF0aW9uIHRyZW5kcy4KCmBgYHtyfQpzbGljZXMgPC0gYygxOTc2LCA1MiwgOTcsIDIyMSwgMTQ1LCAyNykKbGJscyA8LSBjKCJPQi1HWU4iLCAiRmFtaWx5IERvY3RvciIsIk1pZHdpZmUiLCAiTnVyc2UgUHJhY3RpY2lvbmVyIiwgIlBoeXNpY2lhbnMgQXNzaXN0YW50IiwgIk90aGVyIikKcGN0IDwtIHJvdW5kKHNsaWNlcy9zdW0oc2xpY2VzKSoxMDApCmxibHMgPC0gcGFzdGUobGJscywgcGN0KQpsYmxzIDwtIHBhc3RlKGxibHMsICIlIiwgc2VwPSIiKQpwaWUoc2xpY2VzLCBpbml0LmFuZ2xlID0gMTAwLGxhYmVscyA9IGxibHMsIG1haW4gPSAiUTgwNTogV2hhdCB0eXBlIG9mIG1hdGVybml0eSBjYXJlIHByb3ZpZGVyIGRpZCB5b3UgaGF2ZT8iKQogCmBgYAoKIyMjIEZpZ3VyZSAyCgpgYGB7cn0Kc2xpY2VzIDwtIGMoOTIsIDI3LCAxNDIsIDgsIDIsIDMwKQpsYmxzIDwtIGMoIk9CLUdZTiIsICJGYW1pbHkgRG9jdG9yIiwiTWlkd2lmZSIsICJOdXJzZSBQcmFjdGljaW9uZXIiLCAiUGh5c2ljaWFucyBBc3Npc3RhbnQiLCAiT3RoZXIiKQpwY3QgPC0gcm91bmQoc2xpY2VzL3N1bShzbGljZXMpKjEwMCkKbGJscyA8LSBwYXN0ZShsYmxzLCBwY3QpCmxibHMgPC0gcGFzdGUobGJscywgIiUiLCBzZXA9IiIpCnBpZShzbGljZXMsIGluaXQuYW5nbGUgPSAyNSxsYWJlbHMgPSBsYmxzLCBtYWluID0gIlE4MTU6IFdoaWNoIHR5cGUgb2YgcHJvdmlkZXIgZG8geW91IHdpc2ggeW91IGhhZD8iLCBzdWI9ICJSZXNwb25kZW50cyBhbnN3ZXJlZCAxIChZZXMpIHRvIFE4MTEsIERpZCB5b3Ugd2lzaCB5b3UgaGFkIGEgZGlmZmVyZW50IHByb3ZpZGVyPyIpCmBgYAojIyMgRmlndXJlIDMKT3ZlcmFsbCwgMTIlIG9mIHN1cnZleSByZXNwb25kZW50cyB3aXNoZWQgdGhleSBoYWQgYSBkaWZmZXJlbnQgdHlwZSBvZiBtYXRlcm5pdHkgY2FyZSBwcm92aWRlciB0aGFuIHRoZSBvbmUgdGhleSBoYWQuIEZyb20gRmlndXJlIDIsIGl0IGlzIHNob3duIHRoYXQgYWxtb3N0IGhhbGYgb2YgcmVzcG9uZGVudHMgd2hvIGRpZCB3YW50IGEgZGlmZmVyZW50IGNhcmUgcHJvdmlkZXIgd2lzaGVkIHRoZXkgaGFkIGEgbWlkd2lmZS4gQSBmb2xsb3d1cCBxdWVzdGlvbiB3YXMgYXNrZWQgKFE4MTYpIHRvIGV2YWx1YXRlIHBvc3NpYmxlIHJlYXNvbnMgd2h5IG1vdGhlcnMgZGlkIG5vdCBoYXZlIGEgbWlkd2lmZSBpZiB0aGV5IHByZWZlcnJlZCBvbmUuIEZpZ3VyZSAzIHN1Z2dlc3RzIHRoYXQgdGhlIG1vc3QgcG9wdWxhciByZWFzb24gd2FzIHRoYXQgcmVzcG9uZGVudHMgZGlkIG5vdCB0aGluayB0aGF0IHRoZWlyIGhlYWx0aCBpbnN1cmFuY2UgcGxhbiB3b3VsZCBjb3ZlciB0aGUgc2VydmljZXMgb2YgYSBtaWR3aWZlLiBPdGhlciBoaWdobHkgY2l0ZWQgcmVhc29ucyBpbmNsdWRlZDogIkFub3RoZXIgdHlwZSBvZiBtYXRlcm5pdHkgY2FyZSBwcm92aWRlciB3YXMgYXNzaWduZWQgdG8gbWUiIGFuZCAiSSBuZWVkZWQgYSBkb2N0b3IgYmVjYXVzZSBvZiBteSBoZWFsdGggcHJvYmxlbXMiLiBcIyMjIEZpZ3VyZSAzCgpgYGB7cn0KSCA8LSBjKDc3LCAyMCwgMTUsIDIxLCAzOSwgMjksIDMwLCAzMykKTiA8LSBjKCJhIiwgImIiLCAiYyIsICJkIiwgImUiLCAiZiIsICJnIiwgImgiKQpsYmxzODE2IDwtIAogIApiYXJwbG90KEgsbmFtZXMuYXJnPU4seGxhYj0iUmVzcG9uc2UiLCB5bGFiPSJOdW1iZXIgb2YgcmVzcG9uZGVudHMiLCBjb2w9ImdyZXkiLCBtYWluPSJRODE2OiBXaHkgZGlkbid0IHlvdSBoYXZlIGEgbWlkd2lmZSBhcyB5b3VyIG1hdGVybml0eSBjYXJlIHByb3ZpZGVyPyIsIHN1Yj0gIlJlc3BvbmRlbnRzIHRoYXQgYW5zd2VyZWQgMyAoTWlkd2lmZSkgZm9yIFE4MTUsIFdoaWNoIHR5cGUgb2YgcHJvdmlkZXIgZGlkIHlvdSB3aXNoIHlvdSBoYWQ/IiwgYm9yZGVyPSJibGFjayIpCmBgYAoKKipLZXkqKgoKYS0gSSBkaWRuJ3QgdGhpbmsgbXkgaGVhbHRoIGluc3VyYW5jZSBwbGFuIHBhaWQgZm9yIHNlcnZpY2VzIG9mIGEgbWlkd2lmZQoKYi0gSSBkaWRuJ3QgdGhpbmsgdGhhdCBhIG1pZHdpZmUgY291bGQgcHJhY3RpY2UgaW4gYSBob3NwaXRhbAoKYy0gSSBkaWRuJ3QgdGhpbmsgdGhhdCBJIGNvdWxkIGhhdmUgYW4gZXBpZHVyYWwgd2l0aCBhIG1pZHdpZmUKCmQtIEkgZGlkbid0IGtub3cgd2hhdCB3b3VsZCBoYXBwZW4gaWYgSSBuZWVkZWQgYSBkb2N0b3IgKGZvciBleGFtcGxlLCBmb3IgYSBjLXNlY3Rpb24pCgplLSBBbm90aGVyIHR5cGUgb2YgbWF0ZXJuaXR5IGNhcmUgcHJvdmlkZXIgd2FzIGFzc2lnbmVkIHRvIG1lCgpmLSBBIG1pZHdpZmUgd2FzIG5vdCBhdmFpbGFibGUKCmctIEkgbmVlZGVkIGEgZG9jdG9yIGJlY2F1c2Ugb2YgbXkgaGVhbHRoIHByb2JsZW1zCgpoLSBPdGhlciByZWFzb24KCiMjIyBGaWd1cmUgNAoKRmluYWxseSwgZGVzY3JpcHRpdmUgc3RhdGlzdGljcyBwcm92aWRlZCBhIHZpc3VhbGl6YXRpb24gb2YgYmlydGggaW50ZXJ2ZW50aW9ucy4gT2Ygc3VydmV5IHJlc3BvbmRlbnRzLCAzOSUgcmVwb3J0ZWQgdGhlaXIgbWF0ZXJuaXR5IGNhcmUgcHJvdmlkZXIgYXR0ZW1wdGVkIHRvIGluZHVjZSBsYWJvciBpbiBzb21lIHdheS4gRmlndXJlIDQgcmVwcmVzZW50cyB0aGUgYnJlYWtkb3duIG9mIGxhYm9yIHN0YXJ0aW5nIG1ldGhvZHMgZW1wbG95ZWQgYnkgdGhlIGJpcnRoIHByb3ZpZGVyIHByZXNlbnQuIDI3JSAobj02NzMpIG9mIHBlb3BsZSB3aG8gc2FpZCB0aGF0IHRoZWlyIGxhYm9yIHdhcyBpbmR1Y2VkIGJ5IHRoZWlyIHByb3ZpZGVyIGluZGljYXRlZCB0aGF0IFBpdG9jaW4gd2FzIHVzZWQuIENvbXBhcmF0aXZlbHksIDM0JSAobj04NjkpIG9mIG1vdGhlcnMgcmVwb3J0ZWQgUGl0b2NpbiB1c2UgdG8gaHVycnkgdGhlaXIgYmlydGggaW4gdGhlIGxhdGVyIHN0YWdlcyBvZiBsYWJvci4KCmBgYHtyfQpMIDwtIGMoMzk0LCAyNTMsIDY3MywgMTg4LCA1MSkKTSA8LSBjKCJhIiwgImIiLCAiYyIsICJkIiwgImUiKQpiYXJwbG90KEwsbmFtZXMuYXJnPU0seGxhYj0iUmVzcG9uc2UiLCB5bGFiPSJOdW1iZXIgb2YgcmVzcG9uZGVudHMiLCBjb2w9ImdyZXkiLCBtYWluPSJRMTExMTogSG93IGRpZCB5b3VyIG1hdGVybml0eSBjYXJlIHByb3ZpZGVyIHRyeSB0byBzdGFydCB5b3VyIGxhYm9yPyIsIHN1YiA9ICJSZXNwb25kZW50cyBhbnN3ZXJlZCAxIChZZXMpIHRvIFExMTEwLCBEaWQgeW91ciBtYXRlcm5pdHkgY2FyZSBwcm92aWRlciB0cnkgdG8gaW5kdWNlIHlvdXIgbGFib3IgaW4gYW55IHdheT8iLCBib3JkZXI9ImJsYWNrIikKYGBgCgoqKktleSoqCgphLSBJbnNlcnRlZCBhIGZpbmdlciBpbiB0byB0aGUgb3BlbmluZyB0byBteSB3b21iIChjZXJ2aXgpIHRvICJzd2VlcCIgb3IgInN0cmlwIiB0aGUgbWVtYnJhbmVzIGxvb3NlCgpiLSBCcm9rZSBhbmQgcmVsZWFzZWQgbXkgd2F0ZXIgYmVmb3JlIHRoZSBzdGFydCBvZiBsYWJvciBjb250cmFjdGlvbnMKCmMtIEdhdmUgdGhlIG1lZGljaW5lIFBpdG9jaW4gdGhyb3VnaCBhbiBJViBkcmlwIGJlZm9yZSB0aGUgc3RhcnQgb2YgbGFib3IgY29udHJhY3Rpb25zCgpkLSBUcmllZCB0byBzdGFydCBteSBsYWJvciBzb21lIG90aGVyIHdheQoKZS0gTm90IHN1cmUgaG93CgojIyBSZWdyZXNzaW9uIEFuYWx5c2lzCgpgYGB7ciwgaW5jbHVkZSA9IEZBTFNFfQpsb2FkKCJMVE1kYXRhLlB1YmxpYyBWZXJzaW9uRklOQUwuUkRhdGEiKQpsaXN0ZW5pbmdfZGF0YSA8LSB0YWJsZSAlPiUKICAgIHNlbGVjdChjKFE4MDUsUTgxNSxRMTExMWMsUTExMzBiLCBRMTg2MCwgUTE4NjUpKSAKbGlzdGVuaW5nX2RhdGEkaGFkX21pZCA8LSBpZmVsc2UobGlzdGVuaW5nX2RhdGEkUTgwNSA9PSAnNCcsIDEsIDApCmxpc3RlbmluZ19kYXRhJHdpc2hfbWlkIDwtIGlmZWxzZShsaXN0ZW5pbmdfZGF0YSRRODE1ID09ICczJywgMSwgMCkKbGlzdGVuaW5nX2RhdGEkcHJlX3BpdCA8LSBpZmVsc2UobGlzdGVuaW5nX2RhdGEkUTExMTFjID09ICcxJywgMSwgMCkKbGlzdGVuaW5nX2RhdGEkbWlkX3BpdCA8LSBpZmVsc2UobGlzdGVuaW5nX2RhdGEkUTExMzBiID09ICcxJywgMSwgMCkKYGBgCgpSZWxhdGlvbnNoaXAocykgd2VyZSBjYWxjdWxhdGVkIG92ZXIgdGhlIG1vc3QgaW1wb3J0YW50IHZhcmlhYmxlcyBpbmNsdWRpbmcgaW5jb21lLCBQaXRvY2luIHVzYWdlLCB3YW50aW5nIGEgbWlkd2lmZSwgaGF2aW5nIGEgbWlkd2lmZSwgYW5kIGVkdWNhdGlvbiBsZXZlbHMuIFRoZXNlIHdlcmUgYW5hbHl6ZWQgYW5kIHJlZ3Jlc3NlZCBpbiBvcmRlciB0byBkZXRlcm1pbmUgYW55IHNvcnQgb2YgbW9kZWxzIGFuZCBzdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50IGZhY3RvcnMuCgpgYGB7cn0KbW9kZWwxIDwtIGxtKG1pZF9waXQgfiBoYWRfbWlkICsgd2lzaF9taWQgKyBRMTg2MCArIFExODY1LCBkYXRhID0gbGlzdGVuaW5nX2RhdGEpCmh1eHJlZyhtb2RlbDEsIHN0YXRpc3RpY3MgPSBjKE4gPSAibm9icyIsIFIyID0gInIuc3F1YXJlZCIpKQpgYGAKCiMjIyBGaWd1cmUgNTogVGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIFBpdG9jaW4taHVycmllZCBiaXJ0aCBhbmQgaGF2aW5nIGEgbWlkd2lmZS4KCmBgYHtyLCBpbmNsdWRlID0gRkFMU0V9CmZpZ181IDwtIGdncGxvdChkYXRhID0gbmEub21pdChsaXN0ZW5pbmdfZGF0YVssYygibWlkX3BpdCIsICJoYWRfbWlkIildKSwgYWVzKHkgPSBqaXR0ZXIobWlkX3BpdCksIHggPSAoaGFkX21pZCkpKSArIAogIGdlb21fcG9pbnQoc2l6ZSA9IDUsIGFscGhhID0gLjA1KSArCiAgdGhlbWVfY2xhc3NpYygpICsKICBsYWJzKHggPSAiSGFkIGEgTWlkd2lmZSIsIHkgPSAiUGl0b2NpbiBVc2VkIHRvIEh1cnJ5IEJpcnRoIiwgdGl0bGUgPSAiUmVsYXRpb25zaGlwIGJldHdlZW4gSGF2aW5nIGEgTWlkd2lmZSBhbmQgUGl0b2NpbiBIdXJyaWVkIEJpcnRoIikgKwogIHRoZW1lKGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE1KSkgKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIHNlID0gVFJVRSwgY29sb3IgPSAiYmxhY2siLCBmaWxsID0gImJsdWUiKQpgYGAKCmBgYHtyfQpmaWdfNQpgYGAKClVwb24gbG9va2luZyBhdCB0aGUgZ3JhcGggYW5kIHRoZSBkYXRhLCBpdCBzdHJvbmdseSBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gUGl0b2Npbi1odXJyaWVkIGJpcnRocyBhbmQgdGhlIHByZXNlbmNlIG9mIGhhdmluZyBhIG1pZHdpZmUgZHVyaW5nIGJpcnRoIHdhcyBzdGF0aXN0aWNhbGx5IGluc2lnbmlmaWNhbnQuIFRoaXMgaXMgYSByZXN1bHQgb2Ygb3VyIG1vZGVscyBwb3NzZXNzaW5nIHJlbGF0aXZlbHkgbG93IHJlZ3Jlc3Npb24gY29lZmZpY2llbnRzIGFzIHdlbGwgYXMgUjIgdmFsdWVzLiBUaGUgZXN0aW1hdGVkIFIyIHZhbHVlIGNhbWUgb3V0IHRvIGJlIDAuMDY2LCBvciByb3VnaGx5IDYuNjAlIG9mIHRoZSBkYXRhIGNhbiBiZSBleHBsYWluZWQgYnkgdGhlIG1vZGVsIHByb3ZpZGVkLiBGb3Igc3BlY2lmaWNhbGx5IGhhdmluZyBhIFBpdG9jaW4taHVycmllZCBiaXJ0aCwgaGF2aW5nIGEgbWlkd2lmZSBwcmVzZW50IGR1cmluZyBjaGlsZGJpcnRoIG9ubHkgaGFkIGEgZmFjdG9yIG9mIDAuMDUyIGFzIGl0cyByZWdyZXNzaW9uIGNvZWZmaWNpZW50LCBkaXNwbGF5aW5nIHRvIGhhdmUgYWxtb3N0IG5vIHJlbGF0aW9uICh6ZXJvKS4gVGhvdWdoIHNsaWdodGx5IHBvc2l0aXZlLCBkdWUgdG8gdGhpcyBpbmNyZWRpYmx5IHNtYWxsIHJlbGF0aW9uLCBpdCBjYW4gYmUgZGVlbWVkIHRvIGhhdmUgcmVsYXRpdmVseSBzbWFsbCBzdGF0aXN0aWNhbCBlZmZlY3Qgb24gdGhlIG91dGNvbWUuCgojIyMgRmlndXJlIDY6IFRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBQaXRvY2luLWh1cnJpZWQgYmlydGhzIGFuZCB3YW50aW5nIGEgbWlkd2lmZS4KCmBgYHtyLCBpbmNsdWRlID1GQUxTRX0KZmlnXzYgPC0gZ2dwbG90KGRhdGEgPSBuYS5vbWl0KGxpc3RlbmluZ19kYXRhWywgYygibWlkX3BpdCIsICJ3aXNoX21pZCIpXSksIGFlcyh5ID0gaml0dGVyKG1pZF9waXQpLCB4ID0gKHdpc2hfbWlkKSkpICsgCiAgZ2VvbV9wb2ludChzaXplID0gNSwgYWxwaGEgPSAuMDUpICsKICB0aGVtZV9jbGFzc2ljKCkgKwogIGxhYnMoeCA9ICJXYW50ZWQgYSBNaWR3aWZlIiwgeSA9ICJQaXRvY2luIFVzZWQgdG8gSHVycnkgQmlydGgiLCB0aXRsZSA9ICJSZWxhdGlvbnNoaXAgYmV0d2VlbiBXYW50aW5nIGEgTWlkd2lmZSBhbmQgUGl0b2NpbiBIdXJyaWVkIEJpcnRoIikgKwogIHRoZW1lKGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE1KSkgKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIHNlID0gVFJVRSwgY29sb3IgPSAiYmxhY2siLCBmaWxsID0gImJsdWUiKQpgYGAKCmBgYHtyfQpmaWdfNgpgYGAKClVwb24gbG9va2luZyBhdCB0aGUgZ3JhcGggYW5kIHRoZSBkYXRhLCBpdCBzdHJvbmdseSBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gUGl0b2Npbi1odXJyaWVkIGJpcnRocyBhbmQgdGhlIHJldHJvc3BlY3Qgb2Ygd2FudGluZyBhIG1pZHdpZmUgZHVyaW5nIGJpcnRoIHdhcyBzdGF0aXN0aWNhbGx5IGluc2lnbmlmaWNhbnQuIFRoaXMgZHVlIHRvIHRoZSBmYWN0IG9mIG91ciBtb2RlbHMgcG9zc2Vzc2luZyByZWxhdGl2ZWx5IGxvdyByZWdyZXNzaW9uIGNvZWZmaWNpZW50cyBhcyB3ZWxsIGFzIFIyIHZhbHVlcy4gVGhlIGVzdGltYXRlZCBSMiB2YWx1ZSBjYW1lIG91dCB0byBiZSAwLjA2Niwgb3Igcm91Z2hseSA2LjYwJSBvZiB0aGUgZGF0YSBjYW4gYmUgZXhwbGFpbmVkIGJ5IHRoZSBtb2RlbCBwcm92aWRlZC4gRm9yIHNwZWNpZmljYWxseSBoYXZpbmcgYSBQaXRvY2luLWh1cnJpZWQgYmlydGgsIHdhbnRpbmcgYSBtaWR3aWZlIHByZXNlbnQgZHVyaW5nIGNoaWxkYmlydGggb25seSBoYWQgYSBmYWN0b3Igb2YgLTAuMTIwIGFzIGl0cyByZWdyZXNzaW9uIGNvZWZmaWNpZW50LCBkaXNwbGF5aW5nIHRvIGhhdmUgYWxtb3N0IG5vIHJlbGF0aW9uICh6ZXJvKS4gVGhvdWdoIHNsaWdodGx5IG5lZ2F0aXZlLCBkdWUgdG8gdGhpcyBpbmNyZWRpYmx5IHNtYWxsIHJlbGF0aW9uLCBpdCBjYW4gYmUgZGVlbWVkIHRvIGhhdmUgcmVsYXRpdmVseSBzbWFsbCBzdGF0aXN0aWNhbCBlZmZlY3Qgb24gdGhlIG91dGNvbWUuCgojIyMgRmlndXJlIDdhOiBUaGUgcmVsYXRpb25zaGlwIGJldHdlZW4gUGl0b2Npbi1odXJyaWVkIGJpcnRocywgZWR1Y2F0aW9uLCBhbmQgaGF2aW5nIGEgbWlkd2lmZS4KCmBgYHtyLCBpbmNsdWRlID1GQUxTRX0KZmlnXzdhIDwtIGdncGxvdChkYXRhID0gbmEub21pdChsaXN0ZW5pbmdfZGF0YVssIGMoIlExODYwIiwgIm1pZF9waXQiLCAiaGFkX21pZCIpXSksIGFlcyh4ID0gaml0dGVyKFExODYwKSwgeSA9IGppdHRlcihtaWRfcGl0KSkpICsgCiAgZ2VvbV9wb2ludChhZXMoY29sb3IgPSBhcy5mYWN0b3IoaGFkX21pZCkpLCBzaXplID0gNSwgYWxwaGEgPSAwLjIpICsKICB0aGVtZV9jbGFzc2ljKCkgKwogIGxhYnMoeCA9ICJFZHVjYXRpb24gTGV2ZWwiLCB5ID0gIlBpdG9jaW4tSHVycmllZCBCaXJ0aHMiLCB0aXRsZSA9ICJSZWxhdGlvbnNoaXAgYmV0d2VlbiBQaXRvY2luLUh1cnJpZWQgQmlydGhzLCBFZHVjYXRpb24gTGV2ZWwsIGFuZCBNaWR3aWZlIikgKwogIHRoZW1lKGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE1KSkgKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIHNlID0gVFJVRSwgY29sb3IgPSAiYmxhY2siLCBmaWxsID0gImJsdWUiKQpgYGAKCmBgYHtyfQpmaWdfN2EKYGBgCgojIyMgRmlndXJlIDdiOiBUaGUgcmVsYXRpb25zaGlwIGJldHdlZW4gUGl0b2Npbi1odXJyaWVkIGJpcnRocywgZWR1Y2F0aW9uLCBhbmQgd2FudGluZyBhIG1pZHdpZmUuCgpgYGB7ciwgaW5jbHVkZSA9RkFMU0V9CmZpZ183YiA8LSBnZ3Bsb3QoZGF0YSA9IG5hLm9taXQobGlzdGVuaW5nX2RhdGFbLCBjKCJRMTg2MCIsICJtaWRfcGl0IiwgIndpc2hfbWlkIildKSwgYWVzKHggPSBqaXR0ZXIoUTE4NjApLCB5ID0gaml0dGVyKG1pZF9waXQpKSkgKyAKICBnZW9tX3BvaW50KGFlcyhjb2xvciA9IGFzLmZhY3Rvcih3aXNoX21pZCkpLCBzaXplID0gNSwgYWxwaGEgPSAwLjIpICsKICB0aGVtZV9jbGFzc2ljKCkgKwogIGxhYnMoeCA9ICJFZHVjYXRpb24gTGV2ZWwiLCB5ID0gIlBpdG9jaW4tSHVycmllZCBCaXJ0aHMiLCB0aXRsZSA9ICJSZWxhdGlvbnNoaXAgYmV0d2VlbiBQaXRvY2luLUh1cnJpZWQgQmlydGhzLCBFZHVjYXRpb24gTGV2ZWwsIGFuZCB3YW50aW5nIGEgTWlkd2lmZSIpICsKICB0aGVtZShheGlzLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNCkpICsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCBzZSA9IFRSVUUsIGNvbG9yID0gImJsYWNrIiwgZmlsbCA9ICJibHVlIikKYGBgCgpgYGB7cn0KZmlnXzdiCmBgYAoKRmlndXJlcyA3YSBhbmQgN2Igd2lsbCBiZSBpbnRlcnByZXRlZCBzaW11bHRhbmVvdXNseSBiZWNhdXNlIHRoZXkgYXJlIG5lYXJseSB0aGUgc2FtZSBncmFwaCB3aXRoIGFuIGV4Y2VwdGlvbiBvZiBmYWN0b3JpbmcgYWxvbmcgaGF2aW5nIGFuZCB3YW50aW5nIGEgbWlkd2lmZS4gVGhlIHJlZ3Jlc3Npb24gYW5hbHlzaXMgaW5kaWNhdGVzIHRoYXQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIFBpdG9jaW4taHVycmllZCBiaXJ0aHMgYW5kIHRoZSBlZHVjYXRpb24gbGV2ZWwgb2YgdGhlIG1vdGhlciB3YXMgc3RhdGlzdGljYWxseSBzaWduaWZpY2FudC4gVmlzdWFsIGFuYWx5c2lzIG9mIHRoZSBncmFwaCBzaG93cyB0aGF0IGFzIGVkdWNhdGlvbiBsZXZlbCBpbmNyZWFzZXMgKGEgc2NhbGUgZnJvbSBoYXZpbmcgc29tZSBoaWdoIHNjaG9vbCBlZHVjYXRpb24gdG8gYmVpbmcgY29sbGVnZSBlZHVjYXRlZCksIGl0IHdhcyBtb3JlIGxpa2VseSBmb3IgUGl0b2NpbiB0byBiZSBhZG1pbmlzdGVyZWQgZHVyaW5nIGJpcnRoLiBUaGUgZ3JhcGggYWxzbyBzaG93cyBkZXBpY3Rpb25zIG9mIGFuIGVkdWNhdGlvbiBjb2VmZmljaWVudCBiZWluZyAwLjA4MCwgd2hpY2ggd2FzIHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQgYXQgdGhlIDAuMDEgbGV2ZWwgd2hlbiByZWdyZXNzZWQgd2l0aCBQaXRvY2luLWh1cnJpZWQgYmlydGhzLiBUaGUgZmFjdG9yaW5nIG9mIGhhdmluZyBhbmQgd2FudGluZyBhIG1pZHdpZmUsIHdoaWxlIHBlcmhhcHMgbm90IGFzIGluZm9ybWF0aXZlIGFzIG90aGVyIHZhcmlhYmxlcywgcG9pbnRzIHRvIHRoZSBsaWtlbGlob29kIG9mIGEgcmVsYXRpb25zaGlwIGJldHdlZW4gd2FudGluZyBtaWR3aWZlcnkgYW5kIGVkdWNhdGlvbiBsZXZlbC4KCiMjIyBGaWd1cmUgODogVGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHdhbnRpbmcgYSBtaWR3aWZlIGFuZCBlZHVjYXRpb24gbGV2ZWwuCgpgYGB7cn0KbW9kZWwyIDwtIGxtKHdpc2hfbWlkIH4gbWlkX3BpdCArIFExODYwICsgUTE4NjUsIGRhdGEgPSBsaXN0ZW5pbmdfZGF0YSkKaHV4cmVnKG1vZGVsMiwgc3RhdGlzdGljcyA9IGMoTiA9ICJub2JzIiwgUjIgPSAici5zcXVhcmVkIikpCmBgYAoKYGBge3IsIGluY2x1ZGUgPUZBTFNFfQpmaWdfOCA8LSBnZ3Bsb3QoZGF0YSA9IG5hLm9taXQobGlzdGVuaW5nX2RhdGFbLCBjKCJRMTg2MCIsICJ3aXNoX21pZCIpXSksIGFlcyh4ID0gKFExODYwKSwgeSA9IGppdHRlcih3aXNoX21pZCkpKSArIAogIGdlb21fcG9pbnQoc2l6ZSA9IDUsIGFscGhhID0gMC4yKSArCiAgdGhlbWVfY2xhc3NpYygpICsKICBsYWJzKHggPSAiRWR1Y2F0aW9uIExldmVsIiwgeSA9ICJXYW50aW5nIGEgTWlkd2lmZSIsIHRpdGxlID0gIlJlbGF0aW9uc2hpcCBiZXR3ZWVuIFdhbnRpbmcgYSBNaWR3aWZlIGFuZCBFZHVjYXRpb24gTGV2ZWwiKSArCiAgdGhlbWUoYXhpcy50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTUpKSArCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgc2UgPSBUUlVFLCBjb2xvciA9ICJibGFjayIsIGZpbGwgPSAiYmx1ZSIpCmBgYAoKYGBge3J9CmZpZ184CmBgYAoKSW4gb3JkZXIgdG8gZGV0ZXJtaW5lIGlmIHRoZXJlIHRydWx5IGlzIGEgcmVsYXRpb25zaGlwIGJldHdlZW4gYSBtb3RoZXIncyBlZHVjYXRpb24gbGV2ZWwgYW5kIHdhbnRpbmcgYSBtaWR3aWZlLCB3ZSBjaG9zZSB0byBydW4gYW5vdGhlciBsaW5lYXIgbW9kZWwuIEhvd2V2ZXIsIGluIHRoaXMgY2FzZSwgd2FudGluZyBhIG1pZHdpZmUgd2FzIHJlZ3Jlc3NlZCBvbiBhZG1pbmlzdGVyZWQgUGl0b2NpbiwgZWR1Y2F0aW9uIGxldmVsLCBhcyB3ZWxsIGFzIGluY29tZS4gV2hpbGUgdGhlcmUgd2FzIG5vdCBhIHJlbGF0aW9uc2hpcCBzaWduaWZpY2FudGx5IGRpZmZlcmVudCBmcm9tIG5vIHRyZWF0bWVudCwgdGhlIGNvZWZmaWNpZW50IGZvciBpbmNvbWUgd2FzIDAuMDcxLCB3aGljaCB3YXMgc3RhdGlzdGljYWxseSBzaWduaWZpY2FudCBhdCB0aGUgcCBcPCAwLjAxIGxldmVsLiBUaGlzIGluZGljYXRlcyBhcyBhIG1vdGhlcidzIGVkdWNhdGlvbiBpcyBpbmNyZWFzZWQsIG1vdGhlcnMgdGVuZCB0byBwcmVmZXIgbWlkd2lmZXJ5IGNhcmUuIFRoZSBuZXcgUjIgdmFyaWFibGUgaXMgLjEwOCwgd2hpY2ggbWVhbnMgdGhhdCAxMC44JSBvZiB0aGUgdmFyaWFiaWxpdHkgb2Ygd2FudGluZyBhIG1pZHdpZmUgY2FuIGJlIGV4cGxhaW5lZCBieSB0aGUgYW1vdW50IG9mIGVkdWNhdGlvbiBhIG1vdGhlciBoYXMgZXhwZXJpZW5jZWQuCgojIyMgRmlndXJlIDlhOiBUaGUgcmVsYXRpb25zaGlwIGJldHdlZW4gUGl0b2Npbi1odXJyaWVkIGJpcnRocywgaW5jb21lLCBhbmQgaGF2aW5nIGEgbWlkd2lmZS4KCmBgYHtyLCBpbmNsdWRlID1GQUxTRX0KZmlnXzlhIDwtIGdncGxvdChkYXRhID0gbmEub21pdChsaXN0ZW5pbmdfZGF0YVssIGMoIlExODY1IiwgIm1pZF9waXQiLCAiaGFkX21pZCIpXSksIGFlcyh4ID0gKFExODY1KSwgeSA9IGppdHRlcihtaWRfcGl0KSkpICsgCiAgZ2VvbV9wb2ludChhZXMoY29sb3IgPSBhcy5mYWN0b3IoaGFkX21pZCkpLHNpemUgPSA1LCBhbHBoYSA9IDAuMikgKwogIHRoZW1lX2NsYXNzaWMoKSArCiAgbGFicyh4ID0gIkluY29tZSBMZXZlbCIsIHkgPSAiUGl0b2Npbi1IdXJyaWVkIEJpcnRocyIsIHRpdGxlID0gIlJlbGF0aW9uc2hpcCBiZXR3ZWVuIFBpdG9jaW4taHVycmllZCBCaXJ0aHMsIEluY29tZSBMZXZlbCwgYW5kIEhhdmluZyBhIE1pZHdpZmUiKSArCiAgdGhlbWUoYXhpcy50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTUpKSArCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgc2UgPSBUUlVFLCBjb2xvciA9ICJibGFjayIsIGZpbGwgPSAiYmx1ZSIpCmBgYAoKYGBge3J9CmZpZ185YQpgYGAKCiMjIyBGaWd1cmUgOWI6IFRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBQaXRvY2luLWh1cnJpZWQgYmlydGhzLCBpbmNvbWUsIGFuZCB3YW50aW5nIGEgbWlkd2lmZS4KCmBgYHtyLCBpbmNsdWRlID1GQUxTRX0KZmlnXzliIDwtIGdncGxvdChkYXRhID0gbmEub21pdChsaXN0ZW5pbmdfZGF0YVssIGMoIlExODY1IiwgIm1pZF9waXQiLCAid2lzaF9taWQiLCAiUTE4NjAiKV0pLCBhZXMoeCA9IChRMTg2NSksIHkgPSBqaXR0ZXIobWlkX3BpdCkpKSArIAogIGdlb21fcG9pbnQoYWVzKGNvbG9yID0gYXMuZmFjdG9yKHdpc2hfbWlkKSksc2l6ZSA9IDUsIGFscGhhID0gMC4yKSArCiAgdGhlbWVfY2xhc3NpYygpICsKICBsYWJzKHggPSAiSW5jb21lIExldmVsIiwgeSA9ICJQaXRvY2luLUh1cnJpZWQgQmlydGhzIiwgdGl0bGUgPSAiUmVsYXRpb25zaGlwIGJldHdlZW4gUGl0b2NpbiBIdXJyaWVkIEJpcnRocywgSW5jb21lIExldmVsLCBhbmQgV2FudGluZyBhIE1pZHdpZmUiKSArCiAgdGhlbWUoYXhpcy50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTUpKSArCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgc2UgPSBUUlVFLCBjb2xvciA9ICJibGFjayIsIGZpbGwgPSAiYmx1ZSIpCmBgYAoKYGBge3J9CmZpZ185YgpgYGAKClNpbWlsYXIgdG8gN2EgYW5kIDdiLCB3ZSB3aWxsIGxvb2sgYXQgOGEgYW5kIDhiIGluIGEgc2luZ2xlIGludGVycHJldGF0aW9uIGdpdmVuIHRoZSBzaW1pbGFyaXRpZXMuIEdyYXBoIDhhIGFuZCA4YiBhcmUgaWRlbnRpY2FsIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiB0aGUgZmFjdG9yaW5nIG9mIGhhdmluZyBhIG1pZHdpZmUgYW5kIHdhbnRpbmcgYSBtaWR3aWZlLiBXaGlsZSB0aGUgcmVncmVzc2lvbiBsaW5lIG1heSBhcHBlYXIgdG8gYmUgcG9zaXRpdmVseSBzbG9waW5nLCBhbmQgdGhlcmVmb3JlLCBpbmRpY2F0aXZlIG9mIGEgcG9zaXRpdmUgcmVsYXRpb25zaGlwIGJldHdlZW4gUGl0b2Npbi1odXJyaWVkIGJpcnRocyBhbmQgaW5jb21lLCB0aGUgbnVtYmVycyBvZiB0aGUgbGluZWFyIHJlZ3Jlc3Npb24gbW9kZWwgZG8gbm90IHN1cHBvcnQgc3VjaCBhbiBpbmZlcmVuY2UuIEluIGZhY3QsIHRoZSBjb2VmZmljaWVudCBvZiBQaXRvY2luLWh1cnJpZWQgYmlydGhzIHJlZ3Jlc3NlZCBvbiBpbmNvbWUsIGVkdWNhdGlvbiwgYW5kIGhhdmluZyBhIG1pZHdpZmUgaXMgaW4gZmFjdCBuZWdhdGl2ZSwgd2l0aCBhIHZhbHVlIG9mIC0wLjAwNS4gVGhlcmVmb3JlLCB0aGVyZSBpcyBub3QgYSBzaWduaWZpY2FudCByZWxhdGlvbnNoaXAgYmV0d2VlbiBodXJyaWVkIGJpcnRocyBhbmQgaW5jb21lLgoKIyBMaW1pdGF0aW9ucyBhbmQgT3RoZXIgRmFjdG9ycwoKVGhlcmUgcmVtYWlucyB0aGUgYXNwZWN0IG9mIGV4cGVyaW1lbnRhbCBleHRlcm5hbGl0aWVzOyBzb21lIHZhcmlhYmxlcyBhbmQgdGhlaXIgcmVzdWx0aW5nIGVmZmVjdHMgYXJlIG5vdCBjb21wbGV0ZWx5IGFjY291bnRlZCBmb3Igd2l0aGluIHRoZSBleHBlcmltZW50LiBKdXN0IGZyb20gdGhlIGRhdGEgY29sbGVjdGlvbiBtZXRob2QgYWxvbmUsIG5vdGVkIGxpbWl0YXRpb25zIHdlcmUgb2JzZXJ2ZWQuIFRoZSBkYXRhIHdhcyBvbmx5IGNvbGxlY3RlZCBpbiB0aGUgc3RhdGUgb2YgQ2FsaWZvcm5pYSwgb25seSBieSB0aG9zZSB0aGF0IGNvdWxkIHNwZWFrIFNwYW5pc2ggYW5kL29yIEVuZ2xpc2gsIGhhZCBhIGNoaWxkIGR1cmluZyAyMDE2LCBoYWQgYSB3YXkgb2YgcmVzcG9uZGluZyB0byBhIHN1cnZleSBvdmVyIHBob25lIGNhbGwsIGFuZCByZXNwb25kZWQgYmFjayB0byB0aGUgTGlzdGVuaW5nIFRvIE1vdGhlcnMgU3VydmV5LiBBbGwgb2Ygd2hpY2ggbW9yZSBuYXJyb3dseSByZWZpbmluZyB0aGUgc2NvcGUgaW5zdGVhZCBvZiBwcm92aWRpbmcgb3ZlcmFsbCBtb2RlbHMgYW5kIGRhdGEgYXBwbGljYWJsZSB0byBhbGwgbW90aGVycy4gVGhvdWdoIGl0IGNhbiBiZSBpbml0aWFsbHkgZGVlbWVkIHRoYXQgQ2FsaWZvcm5pYSBpcyBhIGdvb2Qgc3RhdGUgdG8gcnVuIGFuIGV4cGVyaW1lbnQgb2YgdGhpcyB0eXBlIG9uIGR1ZSB0byBmYWN0b3JzIHN1Y2ggYXMgcmFjZSwgaW5jb21lLCBlZHVjYXRpb24sIHNoZWVyIHBvcHVsYXRpb24sIGFuZCBvdGhlciBtZWFzdXJlcywgaXQgc3RpbGwgZG9lcyBub3QgZW5jb21wYXNzIGV2ZXJ5IHR5cGUgb2YgbW90aGVyIG9yIGJpcnRoLXByYWN0aWNlLiBGdXJ0aGVybW9yZSwgYWxsIHBhcnRpY2lwYW50cyBoYWQgdG8gYmUgb3ZlciB0aGUgYWdlIG9mIDE4LCBhbmQgYmVjYXVzZSBtb3RoZXJzIGNhbiBoYXZlIGNoaWxkcmVuIGJlbG93IHRoYXQgYWdlLCB0aGF0IGFsc28gb21pdHMgYSBncm91cCBvZiBpbmRpdmlkdWFscyB0aGF0IGNhbiBpbmZsdWVuY2Ugb3VyIGZpbmFsIGRhdGEuIEluIGZhY3QsIG5lYXJseSAxMyUgb2YgYWxsIG1vdGhlcnMgaW4gQW1lcmljYSBhcmUgYmVsb3cgdGhlIGFnZSBvZiAxOCAoUGV3IFJlc2VhcmNoIENlbnRlciAyMDE4KS4KClRoZSBhZ2UgZ2FwIG9taXNzaW9uIGFuZCB0aGUgYmFycmllcnMgdG8gcHJvdmlkaW5nIHN1cnZleSBkYXRhIHN1Y2ggYXMgdGhlIGFiaWxpdHkgYW5kIHRpbWUgdG8gZ2l2ZSBhIHBob25lIGNhbGwgY2FuIGRyYXN0aWNhbGx5IGFsdGVyIHRoZSBpbmNvbWUgdmFyaWFibGVzIHJhbiBpbiBvdXIgYW5hbHlzZXMgYXMgd2VsbC4gQXMgYm90aCBwZW9wbGUgd2hvIGFyZSB1bmRlciB0aGUgYWdlIG9mIDE4IG9yIHRob3NlIHdobyBkbyBub3QgcG9zc2VzcyB0aGUgYWJpbGl0eSBvciBtb25leSB0byBoYXZlIGEgY2VsbCBwaG9uZSBjb3VsZCByZWFzb25hYmx5IGJlIGFzc3VtZWQgdG8gaGF2ZSBsb3dlciBpbmNvbWUgdGhhbiB0aG9zZSB3aG8gYXJlIGFib3ZlIDE4IGFuZCBoYXZlIGNhcGFiaWxpdGllcyBvZiBnaXZpbmcgc3VydmV5IGRhdGEgdmlhIHBob25lIGNhbGwuIFRoZSBTcGFuaXNoL0VuZ2xpc2ggYmFycmllciBlbGltaW5hdGVzIG1vdGhlcnMgd2hvIGRvbid0IGJlbG9uZyB0byBzdWNoIGEgY2F0ZWdvcnkgZnJvbSBnaXZpbmcgdGhlaXIgZGF0YSBhdCBhbGwsIGluZmx1ZW5jaW5nIG91ciBlc3RpbWF0aW9ucyBpbiBtdWx0aXBsZSByZWdhcmRzOyBhcyBub24gU3BhbmlzaC9FbmdsaXNoIHNwZWFraW5nIHBlb3BsZSBoYXZlIHdpZGUgdmFyaWVkIGluY29tZXMgYW5kIGVkdWNhdGlvbmFsIGxldmVscy4gTGFzdGx5LCBhcyBzZWVuIGluIHRoZSBMaXN0ZW5pbmcgVG8gTW90aGVycyBTdXJ2ZXkgRGF0YSBpdHNlbGYsIGZvciBtYW55IG9mIHRoZSBhZG1pbmlzdHJhdGlvbiBvciBiaXJ0aC1wcmFjdGljZSBxdWVzdGlvbnMsIHRoZSBhbnN3ZXIgb2YgIkkgZG9uJ3Qga25vdyIgd2FzIGEgY2hvaWNlLiBUaG91Z2ggbm90IG5lY2Vzc2FyaWx5IG1lZGljYWwgbWFscHJhY3RpY2UsIHdlIGRvIGtub3cgdGhhdCAgY29uc2VudCBkdXJpbmcgYmlydGggaXMgb2Z0ZW4gZm9yZ290dGVuIG9yIGRpc3JlZ2FyZGVkLCBlc3BlY2lhbGx5IHdoZW4gcGVyZm9ybWVkIG91dHNpZGUgdGhlIG1pZHdpZmUgbW9kZWwgb2YgY2FyZS4gCgpGcm9tIGVpdGhlciBsYW5ndWFnZSBiYXJyaWVycywgbWVudGFsIGF3YXJlbmVzcyBvZiB0aGUgbW90aGVyLCBvciBvdGhlciBjb25kaXRpb25zIHdlIGNhbiBjb25jbHVkZSB0aGF0IG1vdGhlcnMgbWlnaHQgbm90IGJlIGFibGUgdG8gcmVtZW1iZXIgY2hvaWNlcyBvciB3ZXJlIG5vdCBhZGVxdWF0ZWx5IGluZm9ybWVkIGFib3V0IHRoZSBhY3Rpb25zIG9mIHRoZWlyIHByb3ZpZGVyLiBCZWNhdXNlIG9mIHRoaXMsIHRoZSBtYWduaXR1ZGUgb2YgYW55IGVmZmVjdCBhbmFseXplZCBpbiBiaXJ0aCBpcyBkaWZmaWN1bHQgdG8gZGV0ZXJtaW5lLgoKIyBDb25jbHVzaW9uCgpUaGUgaW5pdGlhbCBoeXBvdGhlc2lzIHdhcyBpbmNvcnJlY3QgYnV0IHRoaXMgZXhwZXJpbWVudCByZXN1bHRlZCBpbiBsaW1pdGVkIHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZSBlZHVjYXRpb25hbCBsZXZlbCBvZiB0aGUgbW90aGVyIGFuZCBQaXRvY2luIHVzYWdlLCBhcyB3ZWxsIGFzIGVpdGhlciBtaWR3aWZlcnkgcHJlc2VuY2Ugb3IgdGhlIGRlc2lyZSBmb3IgbWlkd2lmZXJ5IGNhcmUuIFRob3VnaCB0aGUgc3R5bGVzIGFuZCBwcmFjdGljZXMgaW52b2x2ZWQgaW4gY2hpbGRiaXJ0aCBtYXkgaGF2ZSBjaGFuZ2VkIG92ZXIgdGltZSwgdGhlcmUgaXMgc3RpbGwgYSBkZWVwIGNvbm5lY3Rpb24gdG8gYmUgZXhwbG9yZWQgYmV0d2VlbiB0aGUgbW90aGVyLCB0aGVpciBiYWNrZ3JvdW5kLCBhbmQgdGhlIG1vZGVscyBvZiBjYXJlIHdoaWNoIGJyaW5nIGNoaWxkcmVuIGludG8gdGhlIHdvcmxkLiAKCiMgUmVmZXJlbmNlcwoKRXZpZGVuY2Ugb246IFBpdG9jaW7CriBEdXJpbmcgdGhlIFRoaXJkIFN0YWdlIG9mIExhYm9yLiAoMjAyMCwgSnVuZSAyMykuIEV2aWRlbmNlIEJhc2VkIEJpcnRowq4uIDxodHRwczovL2V2aWRlbmNlYmFzZWRiaXJ0aC5jb20vZXZpZGVuY2Utb24tcGl0b2Npbi1kdXJpbmctdGhlLXRoaXJkLXN0YWdlLW9mLWxhYm9yLz4KCkhlcm1hbm4sIEEuIChuLmQuKS4gTWFuYWdpbmcgTGFib3Igd2l0aCBQaXRvY2luOiBNZWRpY2FsIERpc2NvdXJzZSBhbmQgRGVjaXNpb24tTWFraW5nIGluIENvbnRlbXBvcmFyeSBDbGluaWNhbCBTZXR0aW5ncy4gOTkuCgpJbiBEZWZlbnNlIG9mIE5vcm1hbCBCaXJ0aC4gKDIwMTksIFNlcHRlbWJlciAyNikuIFRoZSBNaWR3aXZlcyBPZiBOZXcgSmVyc2V5LiA8aHR0cHM6Ly9taWR3aXZlc29mbmouY29tL2luLWRlZmVuc2Utb2Ytbm9ybWFsLWJpcnRoLz4KCk1hbnN5LCBBLiAoMjAxNykuIERvZXMgTGFib3IgQXVnbWVudGF0aW9uIHdpdGggT3h5dG9jaW4gSW5jcmVhc2UgdGhlIFJpc2sgb2YgUG9zdHBhcnR1bSBIZW1vcnJoYWdlPyBBIFJhbmRvbWl6ZWQgQ29udHJvbGxlZCBUcmlhbC4gQ2xpbmljcyBpbiBNb3RoZXIgYW5kIENoaWxkIEhlYWx0aCwgMTQoMykuIDxodHRwczovL2RvaS5vcmcvMTAuNDE3Mi8yMDkwLTcyMTQuMTAwMDI2OD4KClBldyBSZXNlYXJjaCBDZW50ZXIuICgyMDE4LCBKYW51YXJ5IDEwKS4gV29tZW4gYXJlIGRlbGF5aW5nIG1vdGhlcmhvb2QgdGhyb3VnaCB0aGVpciAyMHMuIFBldyBSZXNlYXJjaCBDZW50ZXIncyBTb2NpYWwgJiBEZW1vZ3JhcGhpYyBUcmVuZHMgUHJvamVjdC4gUmV0cmlldmVkIE5vdmVtYmVyIDMwLCAyMDIxLCBmcm9tIDxodHRwczovL3d3dy5wZXdyZXNlYXJjaC5vcmcvc29jaWFsLXRyZW5kcy8yMDE4LzAxLzE4L3RoZXlyZS13YWl0aW5nLWxvbmdlci1idXQtdS1zLXdvbWVuLXRvZGF5LW1vcmUtbGlrZWx5LXRvLWhhdmUtY2hpbGRyZW4tdGhhbi1hLWRlY2FkZS1hZ28vcHN0bF8xLTE4LTE4LW1vdGhlcmhvb2QtMDEvPgoKVGhlc2lzIEV4cGVjdGF0aW9ucyBhbmQgRXhwZXJpZW5jZXMgb2YgRmlyc3QtVGltZSBNb3RoZXJzLCBBbmRyZWEgRnJldW5kLnBkZi4gKG4uZC4pLiBSZXRyaWV2ZWQgTm92ZW1iZXIgMzAsIDIwMjEsIGZyb20gPGh0dHBzOi8vc2Nob2xhcndvcmtzLml1cHVpLmVkdS9iaXRzdHJlYW0vaGFuZGxlLzE4MDUvMTY2OS9UaGVzaXMlMjBFeHBlY3RhdGlvbnMlMjBhbmQlMjBFeHBlcmllbmNlcyUyMG9mJTIwRmlyc3QtVGltZSUyME1vdGhlcnMsJTIwQW5kcmVhJTIwRnJldW5kLnBkZj9zZXF1ZW5jZT0yPgo=